<?php
/**
 * Nweb Editor
 *
 * This script is protected by copyright. Its use, copying, modification
 * and distribution without written consent of the author is prohibited.
 *
 * @category    source
 * @package     pl.nweb.editor.model
 * @subpackage  row
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2012 Krzysztof Kardasz
 * @license     http://www.gnu.org/licenses/lgpl-3.0.txt  GNU Lesser General Public
 * @version     1.0 $Id$
 * @link        https://nweb-editor.googlecode.com
 * @link        http://editor.nweb.pl
 */

namespace pl\nweb\editor\app\model\gateway\row;

use \pl\nweb\editor\app\model\gateway\table\Media as Table;

/**
 * Model wiersza tabeli
 *
 * @category    source
 * @package     pl.nweb.editor.model
 * @subpackage  row
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2012 Krzysztof Kardasz
 * @version     1.0 $Id$
 */
class Media extends \pl\nweb\editor\app\model\gateway\Row
{
    /**
     * Definiuje identyfikator
     *
     * @param integer $id identyfikator
     * @return void
     */
    public function setId ($id)
    {
        if($id = (int)$id) {
            $this->{Table::FIELD_ID} = $id;
        }
    }

    /**
     * Zwraca identyfikator
     *
     * @return integer
     */
    public function getId ()
    {
        return (int)$this->get(Table::FIELD_ID);
    }

    /**
     * Definiuje klasę obiektu
     *
     * @param  string $class klasa obiektu
     * @return void
     */
    public function setClass ($class)
    {
        $this->{Table::FIELD_CLASS} = $class;
    }

    /**
     * Zwraca klasę obiektu
     *
     * @return string
     */
    public function getClass ()
    {
        return $this->get(Table::FIELD_CLASS);
    }

    /**
     * Definiuje nazwę medium
     *
     * @param  string $name nazwa
     * @return void
     */
    public function setName ($name)
    {
        $this->{Table::FIELD_NAME} = $name;
    }

    /**
     * Zwraca nazwę medium
     *
     * @return string
     */
    public function getName ()
    {
        return $this->get(Table::FIELD_NAME);
    }

    /**
     * Definiuje rozmiar pliku w bajtach
     *
     * @param  integer $size rozmiar pliku w bajtach
     * @return void
     */
    public function setFilesize ($size)
    {
        $this->{Table::FIELD_FILESIZE} = (int)$size;
    }

    /**
     * Zwraca rozmiar pliku w bajtach
     *
     * @return integer
     */
    public function getFilesize ()
    {
        return (int)$this->get(Table::FIELD_FILESIZE);
    }

    /**
     * Definiuje nazwę pliku
     *
     * @param  string $name nazwa pliku
     * @return void
     */
    public function setFilename ($name)
    {
        $this->{Table::FIELD_FILENAME} = $name;
    }

    /**
     * Zwraca nazwę pliku
     *
     * @return string
     */
    public function getFilename ()
    {
        return $this->get(Table::FIELD_FILENAME);
    }

    /**
     * Definiuje mime type pliku
     *
     * @param  string $mimeType mime type pliku
     * @return void
     */
    public function setMimetype ($mimeType)
    {
        $this->{Table::FIELD_MIMETYPE} = $mimeType;
    }

    /**
     * Zwraca mime type pliku
     *
     * @return string
     */
    public function getMimetype ()
    {
        return $this->get(Table::FIELD_MIMETYPE);
    }

    /**
     * Definiuje meta dane
     *
     * @param  string $metaData meta dane
     * @return void
     */
    public function setMetadata ($metaData)
    {
        $this->{Table::FIELD_METADATA} = $metaData;
    }

    /**
     * Zwraca meta dane
     *
     * @return string
     */
    public function getMetadata ()
    {
        return $this->get(Table::FIELD_METADATA);
    }

    /**
     * Definiuje 40-znakową sumę kontrolną sha1
     *
     * @param  string $checksum 40-znakowa suma kontrolna sha1
     * @return void
     */
    public function setChecksum ($checksum)
    {
        $this->{Table::FIELD_CHECKSUM} = $checksum;
    }

    /**
     * Zwraca 40-znakową sumę kontrolną sha1
     *
     * @return string
     */
    public function getChecksum ()
    {
        return $this->get(Table::FIELD_CHECKSUM);
    }

    /**
     * Definiuje status
     *
     * @param  integer $status status
     * @return void
     */
    public function setStatus ($status)
    {
        $this->{Table::FIELD_STATUS} = (int)$status;
    }

    /**
     * Zwraca status
     *
     * @return integer
     */
    public function getStatus ()
    {
        return (int)$this->get(Table::FIELD_STATUS);
    }

    /**
     * Zwraca flagę czy jest to podany status
     *
     * @param  integer $status status
     * @return boolean
     */
    public function isStatus ($status)
    {
        return $status == $this->getStatus();
    }

    /**
     * Zwraca datę utworzenia obiektu
     *
     * @param  string $format format
     * @return null|string
     */
    public function getCreated ($format = 'Y/m/d H:i:s')
    {
        return $this->_getDate(Table::FIELD_CREATED, $format);
    }

    /**
     * Allows pre-insert logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _insert()
    {
        $this->{Table::FIELD_CREATED} = new \Zend_Db_Expr('NOW()');
    }
}